package com.designMode.chain;

/**
 * 责任链
 * 下面这个类做两件事,
 * 1.处理对象
 * 2.处理完后,交给下个"负责人"处理.
 */
public abstract class ProcessObject {
	protected ProcessObject successor;

	/**
	 * 如果把handle是abstract,那么每个子类"负责人"都要把this.successor.handle();相关代码加上,
	 * 这是直接把handle实现,可能有变化的是handlerMultiple,只让它是abstract
	 */
	public void handle() {
		handleMultiple();//有变化的子类去做
		//固定的代码,这里已经实现,
		if (null != this.successor) {
			this.successor.handle();
		}
	}

	public abstract void handleMultiple();

	public void setSuccessor(ProcessObject successor) {
		this.successor=successor;
	}
}
